/*************************************************************************
 *                                                                       *
 * This file is part of the FreeMAPs distribution.  For full copyright   *
 * information, see COPYRIGHT and COPYING.LESSER.                        *
 *                                                                       *
 * Author:           sqbang                                              *
 * Email:            sqbang@ustc.edu                                     *
 * Date:             2011.03.31                                          *
 *                                                                       *
 *************************************************************************/

#ifndef FreeMAPs_include_COMMON_enum_EquationEnsembleType_h
#define FreeMAPs_include_COMMON_enum_EquationEnsembleType_h

#include "FreeMAPsConfig.h"

namespace FreeMAPs
{

/**
 * in the program, all equation is organized in USER_DEFINED_EQUATION manner.
 * but in that file that user write to define the information, it should be more
 * convinent to use some simple way to set the equation.
 * for example, if use set the equation type to NAVIER_STOKES, the program
 * will automatically generator 3 equations of mass, momentum and energy conservation.
 */
enum class EquationEnsembleType
{
    HEAT_CONDUCTION = 0,    ///< rho*c*df/dt - k*grad(f) - source = 0
    NAVIER_STOKES,      ///< Navier-Stokes equations of mass, momentum and energy conservation equations.
    CREEPING_FLOW,      ///< mu*grad^2(V) = grad(p), div(V) = -(1-2nu)/mu P.
    ELASTIC_MECHANICS,
    RAY_TRACING,
    LASER_PROPAGATION_IN_ATMOSPHERE,

    INVALID_VALUE
};

namespace Utilities
{

bool
is_pde_equation_ensemble (
    const EquationEnsembleType type);

}

}

#include "COMMON/enum/EquationEnsembleType.inl"

#endif
